Three-dimensional (3D) meshes have been widely used in various applications for representing 3D objects. Their raw representation usually requires a huge amount of data, especially with the rapid growth of 3D scanners. However, most applications demand compact representation of 3D meshes for storage and transmission. Various algorithms have been proposed to compress 3D meshes efficiently from the early 1990s. Assumingly, this kind of technique will receive even more attention from both academe and industry with the rapid growth of internet based 3D applications.
The surface of a 3D object is a triangle mesh, i.e. it is composed of triangles. Two triangles that share an edge are neighbours. A sequence of neighbouring triangles is a path, and a set of triangles is called a connected component if a path between any two of its triangles exists. Flat surface areas that are in the shape of a parallelogram require only two triangles to be correctly described, while flat areas that are not in the shape of a parallelogram require more triangles. Typically, 3D meshes are represented by three types of data: connectivity data, geometry data and property data. Connectivity data describe the adjacency relationship between vertices, geometry data specify vertex locations in 3D space, and property data specify attributes such as the normal vector, material reflectance and texture coordinates. Most widely-used 3D compression algorithms compress connectivity data and geometry data separately. The coding order of geometry data is determined by the underlying connectivity coding. 3D mesh property data are usually compressed by a method similar to geometry compression.
Geometry data are usually compressed by exploiting high correlation between the positions of adjacent vertices along the coding order, which are also spatially adjacent in most cases. Most geometry compression schemes follow a three-step procedure: pre-quantization of vertex positions, prediction of quantized positions, and entropy coding of prediction residuals.
Uncompressed geometry data typically specify each coordinate component with a 32-bit floating-point number. However, this precision is beyond human eyes' perception capability and is far more than needed for common applications. Thus, quantization can be used for reducing the data amount without serious impairment on visual quality. Quantization techniques can be classified to be uniform on non-uniform. Each quantization cell is of the same length in a uniform scalar quantizer while cells have different lengths in a non-uniform scalar quantizer. A known method is to partition a mesh into several regions according to local curvature and triangle sizes, and then adaptively choose different quantization resolutions for different regions. Within each region, the vertex coordinates are uniformly quantized. Compared with non-uniform quantization, uniform quantization is simple and computationally efficient, but it is not optimal in terms of rate-distortion (R-D) performance.
Another important issue of geometry data compression is the coordinate system used to express vertex positions. Commonly a (usually cartesian) world coordinate system (WCS) for the complete model and/or a local coordinate system (LCS) for a single triangle are used, as shown in FIG. 1 a).